import request from '@/utils/request';
import type { BaseBeanModel, ResponseBaseData, TreeNodeModel } from '@/api/model/baseModel';
export const basePath = '/appsys/dept/DeptRest';
/** 部门表 */
export interface SysDeptDto extends BaseBeanModel {
  /** 部门编码 */
  deptCode?: string;
  /** 部门名称 */
  deptName?: string;
  /** 排序编号 */
  orderBy?: number;
  /** 全拼/简拼 */
  deptPinYin?: string;
  /** 上级部门 */
  parentDeptId?: string;
  /** 部门别名 */
  deptAlias?: string;
  /** 邮编 */
  post?: string;
  /** 手机号码 */
  tel?: string;
  /** 传真 */
  fax?: string;
  /** 邮箱 */
  email?: string;
  /** 办公地点 */
  deptPlace?: string;
  /** 是否有效 */
  validFlag?: string;
  /** 部门类型 */
  deptType?: string;
  /** 描述 */
  deptDesc?: string;
}

/**
 * 获取数据
 * @param parentId 节点id
 * @param nodeType 节点类型
 * @returns 获取到的列表数据
 */
export function getSysOrgNode(parentId: string, nodeType: string): Promise<ResponseBaseData<TreeNodeModel[]>> {
  return request.get(`${basePath}/getTreeTableDataOnOrgManager/${parentId}/${nodeType}/v1`);
}

/**
 * 查询数据
 * @param param 查询内容
 * @returns 查询到的列表数据
 */
export function searchSysOrg(param: string): Promise<ResponseBaseData<TreeNodeModel[]>> {
  return request.post(`${basePath}/getTreeTableDataOnOrgManagerByKeyword/v1`, param);
}

/**
 * 根据id加载数据
 * @param id 表单id
 * @returns 表单数据
 */
export function getSysDept(id: string): Promise<ResponseBaseData<SysDeptDto>> {
  return request.get(`${basePath}/get/${id}/v1`);
}

/**
 * 保存表单数据
 * @param form 表单数据
 * @param parentType 保存数据类型: org、dept
 * @returns 保存结果
 */
export function saveSysDept(form: SysDeptDto, parentType: string): Promise<ResponseBaseData<any>> {
  return request.post(`${basePath}/save/v1?parentType=${parentType}`, form);
}

/**
 * 更新有无效状态
 * @param param 要更新的数据集合
 * @returns 更新结果
 */
export function updateValidFlag(param: any): Promise<ResponseBaseData<any>> {
  return request.post(`${basePath}/updateValidFlag/v1`, param);
}

/**
 * 初始化部门拼音
 * @param param 要初始化的数据集合
 * @returns 初始化结果
 */
export function initDeptPinyin(param: any): Promise<ResponseBaseData<any>> {
  return request.post(`${basePath}/initializePinyin/v1`, param);
}

/** 初始化部门索引 */
export function initDeptIndex(): Promise<ResponseBaseData<any>> {
  return request.post(`${basePath}/initDeptIndex/v1`);
}

/**
 * 获取用户模型左侧组织树数据
 * @param parentId 父节点id
 * @param nodeType 父节点类型
 * @returns 左侧组织树数据
 */
export function getSysOrgOfUserManager(parentId: string, nodeType: string): Promise<ResponseBaseData<TreeNodeModel[]>> {
  return request.post(`${basePath}/getLevelTreeDataOnLeftSideOfUserManager/${parentId}/${nodeType}/v1`);
}

/**
 * 用户模型左侧组织树查询数据
 * @param param 查询内容
 * @returns 查询到的列表数据
 */
export function searchSysOrgOfUserManager(param: string): Promise<ResponseBaseData<TreeNodeModel[]>> {
  return request.post(`${basePath}/getLevelTreeDataOnLeftSideOfUserManagerByKeyword/v1`, param);
}
